// 导入Pinia库以创建一个新的Pinia实例
import { createPinia } from 'pinia'
// 导入持久化插件，以便在不同会话之间保留状态
import persistedState from 'pinia-plugin-persistedstate'
// 导入设备存储模块，用于管理设备相关信息
import { useDeviceStore } from './device/index.js'
// 导入偏好设置存储模块，用于管理用户的偏好设置
import { usePreferenceStore } from './preference/index.js'
// 导入任务存储模块，用于管理任务相关数据
import { useTaskStore } from './task/index.js'
// 导入主题存储模块，用于管理应用的主题设置
import { useThemeStore } from './theme/index.js'

// 导出自定义的存储模块，以便在应用中使用
export { useDeviceStore, usePreferenceStore, useTaskStore, useThemeStore }

// 定义一个插件对象，用于在 Vue 应用中集成 Pinia 存储
export default {
  // 安装方法，用于在 Vue 应用中集成和配置 Pinia
  install(app) {
    // 创建 Pinia 实例
    const store = createPinia()

    // 使用 Pinia 的持久化插件，以支持在本地存储中持久化存储数据
    store.use(persistedState)

    // 在 Vue 应用中使用 Pinia 实例
    app.use(store)

    // 在全局属性中添加自定义存储实例，以便在应用中的任何地方访问
    app.config.globalProperties.$store = {
      device: useDeviceStore(),
      preference: usePreferenceStore(),
      theme: useThemeStore(),
    }
  },
}
